/*
* simpleDialog
*
* */

var w,h,className,tableOffsetTop;

function getSrceenWH(){
    w = $(window).width();
    h = $(window).height();
    $('.dialogBg').width(w).height(h);
    tableOffsetTop = $('.c');
}

function centerTheElm(elementStr) {
    var elmHeight = $(elementStr).height();
    var elmWidth = $(elementStr).width();
    $(elementStr).css('top', (h - elmHeight) / 2 + 'px');
    $(elementStr).css('left', (w - elmWidth) / 2 + 'px');
}


//初始化dialog组件，参数activeBtnClass：传入触发对话框的元素类名, parents:作为对话框的父元素的类名，callback：回调函数
function initDialog(activeBtnClass, parents, callback) {

    getSrceenWH();

    var parentsClass = parents;

    $(activeBtnClass).click(function(event){
        event.preventDefault();//阻止传递过来的button事件冒泡
        $(parentsClass + ' .dialog').fadeIn();
        $(parentsClass + ' .dialogBg').fadeIn(300, function () {
            callback.call();
        });
    });

    //关闭弹窗
    $('.closeDialogBtn').click(function(){
        $(parentsClass + ' .dialogBg .success').fadeOut();
        $(parentsClass + ' .dialogBg .fail').fadeOut();
        $(parentsClass + ' .dialogBg img').fadeOut();
        $(parentsClass + ' .dialogBg').fadeOut(300,function(){
            $(parentsClass + ' .dialog').addClass('bounceOutUp').fadeOut(function () {
                $(this).removeClass('bounceOutUp');
            });
        });
    });

    //对话框垂直居中
    var dialogHeight = $(parentsClass + ' .dialog').height();
    var heightDiff = h - dialogHeight;
    if (heightDiff < 0) {
        heightDiff = 0;
        $(parentsClass + ' .dialog').css('position', 'absolute');//如果对话框高度超出屏幕高度，将对话框设置成absolute定位（可以使用滚动条）
    } else {
        $(parentsClass + ' .dialog').css('position', 'fixed');//否则使用fixed定位
    }
    $(parentsClass + ' .dialog').css('top', heightDiff / 2 + 'px');

}

//初始化默认样式的对话框（弹出框），只包含自定义的文本信息和确认、取消按钮
function initDialogDefault(activeBtnClass, parents, confirmCallback) {
    getSrceenWH();

    var parentsClass = parents;

    $(activeBtnClass).click(function(event){
        event.preventDefault();//阻止传递过来的button事件冒泡
        $(parentsClass + ' .dialogBg').fadeIn(1, function () {
            $(parentsClass + ' .dialog').addClass('bounceIn').fadeIn();
        });
    });

    $(parentsClass + ' .cancelBtn').click(function () {
        $(parentsClass + ' .dialogBg .success').fadeOut();
        $(parentsClass + ' .dialogBg .fail').fadeOut();
        $(parentsClass + ' .dialogBg img').fadeOut();
        $(parentsClass + ' .dialogBg').fadeOut(1,function(){
            $(parentsClass + ' .dialog').removeClass('bounceIn');
            $(parentsClass + ' .dialog').addClass('bounceOut').fadeOut(function () {

            });
        });
    });

    $(parentsClass + ' .conformBtn').click(function () {
        finishDialog(parentsClass);
        confirmCallback.call();
    });

    //对话框垂直居中
    var dialogHeight = $(parentsClass + ' .dialog').height();
    var heightDiff = h - (dialogHeight <= 110 ? 110: dialogHeight);
    $(parentsClass + ' .dialog').css('top', heightDiff / 2 + 'px');
}

//此方法用于不传入触发元素，直接打开对话框的情景
function openDialog(parents, callback) {
    getSrceenWH();
    callback.call();

    var parentsClass = parents;
    $(parentsClass + ' .dialog').fadeIn();
    $(parentsClass + ' .dialogBg').fadeIn(300, function () {

    });

    //关闭弹窗
    $('.closeDialogBtn').click(function(){
        $(parentsClass + ' .dialogBg .success').fadeOut();
        $(parentsClass + ' .dialogBg .fail').fadeOut();
        $(parentsClass + ' .dialogBg img').fadeOut();
        $(parentsClass + ' .dialogBg').fadeOut(300,function(){
            $(parentsClass + ' .dialog').addClass('bounceOutUp').fadeOut(function () {
                $(this).removeClass('bounceOutUp');
            });
        });
    });

    //对话框垂直居中
    var dialogHeight = $(parentsClass + ' .dialog').height();
    var heightDiff = h - dialogHeight;
    if (heightDiff < 0) {
        heightDiff = 0;
        $(parentsClass + ' .dialog').css('position', 'absolute');//如果对话框高度超出屏幕高度，将对话框设置成absolute定位（可以使用滚动条）
    } else {
        $(parentsClass + ' .dialog').css('position', 'fixed');//否则使用fixed定位
    }
    $(parentsClass + ' .dialog').css('top', heightDiff / 2 + 'px');
}

//此方法用于不传入触发元素，直接打开对话框的情景
function openDefaultDialog(parents, confirmCallback, cancelCallback) {
    getSrceenWH();
    var parentsClass = parents;
    $(parentsClass + ' .dialogBg').fadeIn(1, function () {
        $(parentsClass + ' .dialog').addClass('bounceIn').fadeIn();
    });
    //对话框垂直居中
    var dialogHeight = $(parentsClass + ' .dialog').height();
    var heightDiff = h - dialogHeight;
    $(parentsClass + ' .dialog').css('top', heightDiff / 2 + 'px');
    //点击关闭对话框
    $(parentsClass + ' .cancelBtn').click(function () {
        $(parentsClass + ' .dialogBg .success').fadeOut();
        $(parentsClass + ' .dialogBg .fail').fadeOut();
        $(parentsClass + ' .dialogBg img').fadeOut();
        $(parentsClass + ' .dialogBg').fadeOut(1,function(){
            $(parentsClass + ' .dialog').removeClass('bounceIn');
            $(parentsClass + ' .dialog').addClass('bounceOut').fadeOut(function () {
                cancelCallback.call();
            });
        });
    });
    //点击确认对话框
    $(parentsClass + ' .conformBtn').click(function () {
        finishDialog(parentsClass);
        confirmCallback.call();
    });

}

//此方法用于对话框内部的操作点击相应按钮的时候直接触发,相当于等待界面，此时还不确定操作是否成功
function finishDialog(parents) {
    var parentsClass = parents;
    $(parentsClass + ' .dialog').fadeOut(100);
    $(parentsClass + ' .dialogBg img').fadeIn();
    centerTheElm(parentsClass + ' .dialogBg img');
}

//该方法用于设置对话框内部操作（如请求后台）成功与否的展示方式，操作成功则显示成功并调用回调函数，失败则重新显示对话框
function resultDialog(isSucceed, parents, callback) {
    var parentsClass = parents;
    if (isSucceed) {
        $(parentsClass + ' .dialogBg img').fadeOut(100, function () {
            $(parentsClass + ' .dialogBg .success').fadeIn(500, function () {
                $(parentsClass + ' .dialogBg .success').fadeOut();
                $(parentsClass + ' .dialogBg .fail').fadeOut();
                $(parentsClass + ' .dialogBg img').fadeOut();
                $(parentsClass + ' .dialogBg').fadeOut(300,function(){
                    callback.call();
                });
            });
        });
        centerTheElm(parentsClass + ' .dialogBg .success');
    } else {
        $(parentsClass + ' .dialogBg img').fadeOut(100, function () {
            $(parentsClass + ' .dialogBg .fail').fadeIn(500, function () {
                $(parentsClass + ' .dialog').fadeIn(200, function () {
                    $(parentsClass + ' .dialogBg .fail').fadeOut(1, function () {
                        callback.call();
                    });
                });
            });
        });
        centerTheElm(parentsClass + ' .dialogBg .fail');
    }
}
//跟右上角关闭按钮相同的功能，要在初始化对话框的方法中调用
function closeDialog(activeBtnClass, parents, callback) {
    var parentsClass = parents;
    //关闭弹窗
    $(activeBtnClass).click(function(){
        $(parentsClass + ' .dialogBg .success').fadeOut();
        $(parentsClass + ' .dialogBg .fail').fadeOut();
        $(parentsClass + ' .dialogBg img').fadeOut();
        $(parentsClass + ' .dialogBg').fadeOut(300,function(){
            $(parentsClass + ' .dialog').addClass('bounceOutUp').fadeOut(function () {
                $(this).removeClass('bounceOutUp');
                callback.call();
            });
        });
    });
}

function closeDefaultDialog(activeBtnClass, parents, callback) {
    var parentsClass = parents;
    $(activeBtnClass).click(function(){
        $(parentsClass + ' .dialogBg .success').fadeOut();
        $(parentsClass + ' .dialogBg .fail').fadeOut();
        $(parentsClass + ' .dialogBg img').fadeOut();
        $(parentsClass + ' .dialogBg').fadeOut(300,function(){
            $(parentsClass + ' .dialog').addClass('bounceIn').fadeOut(function () {
                $(this).removeClass('bounceIn');
                callback.call();
            });
        });
    });
}